﻿goog.provide('imc.ui.CatProyecto');

imc.ui.CatProyecto = function (opt) { //Constructor
    //attributes privados
    var dataGrid;

    /*\\Behavior : --------------------------------- */
    //Todos los ids van con #
    this.opt = {
        idDivContent: "#der"
        , idDivNav: "#izq"
        , idTableDataTable: "#tblCat"
    };

    $().extend(this.opt, opt);
    //alert(this.opt.test);
    this.draw();
    /*//Behavior : --------------------------------- */
} //Fin constructor

//Atributos Público************************************************
imc.ui.CatProyecto.prototype.oTable = null;
imc.ui.CatProyecto.prototype.opt = null;

//Metodos Públicos*************************************************
imc.ui.CatProyecto.prototype.draw = function () {
    $(this.opt.idDivNav).load('catalogos.html #navigationPanelCat', function () { });
    this.loadContent();
};

imc.ui.CatProyecto.prototype.loadContent = function () {
    var that = this;
    $(this.opt.idDivContent).load('catalogos.html #catContent', function () {
        that.catProyectoDataTable();
    });
};

imc.ui.CatProyecto.prototype.catProyectoDataTable = function () {
    var that = this;
    $.ajax({
        url: "Services/CAT.svc/GetDataProyecto"
        ,type: "POST"
        ,dataType: "json"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,success: function (data) {
            oTable = $('#tblCat').dataTable({
                'bInfo': false
                ,'bPaginate': false
                ,'bLengthChange': false
                ,'bRetrieve': true, 'sDom': ''
                ,'sInfoEmpty': ''
                ,'bAutoWidth': false
                ,aaData: data.GetDataProyectoResult
                ,aoColumns: [
                    {
                        "aTargets": [0]
                        ,"fnRender": function (oObj) {
                            return '<input type="checkbox" id="readonly" imc-data="' + oObj.aData["ID_PROYECTO"] + '" value="' + oObj.aData[0] + '" name="check" />';
                        }
                        ,"sClass": "checkboxId"
                        ,"bSearchable": false
                        ,"bSortable": false
                        ,"mDataProp": "check"
                        ,"sWidth": "4%"
                    }
                    ,{ "sTitle": "Proyecto", "mDataProp": "PROYECTO", "sClass": "editarCat" }
                ]
            });
            $('#tblCat tbody .editarCat').die('click');
            $('#tblCat tbody .editarCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var sDataCat = oTable.fnGetData($(this).parent().get(0));
                console.log(sDataCat);
                for (var i in sDataCat) {
                    if (i = 'ID_PROYECTO') {
                        idCat = sDataCat[i];
                    }
                }
                var dlg = that.dlgUpdateProyecto(idCat);
                dlg.setVisible(true);
                //Recuperar campos para modificar
                $.ajax({
                    type: "POST"
                    ,url: "Services/Cat.svc/GetOneProyecto"
                    ,data: '{"ID_PROYECTO":' + idCat + '}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        if (data.GetOneProyectoResult != null) {
                            /*\\Object CharCounter : ------------------------*/
                            var charCounter = new imc.CharCounter({columnName:"PROYECTO"});
                            /*//Object CharCounter : ------------------------*/
                            document.getElementById('PROYECTO').value = data.GetOneProyectoResult["PROYECTO"];
                        } else {
                            alert('Los datos vienen vacios ({"GetOneProyectoResult":null})');
                        }
                    }
                    ,error: function (result) {
                        alert('Error al recuperar Proyecto ' + result.status + ' ' + result.statusText);
                    }
                });
            });
            $('.newCat').die('click');
            $('.newCat').live('click', function () {
                var dlg = that.dlgNewCatProyecto();
                dlg.setVisible(true);
                /*\\Object CharCounter : ------------------------*/
                var charCounter = new imc.CharCounter({columnName:"PROYECTO"});
                /*//Object CharCounter : ------------------------*/
            });
            $('.deleteCat').die('click');
            $('.deleteCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var stringDeleteCat = "";
                $('input[type="checkbox"]:checked', oTable.fnGetNodes()).each(function (i) {
                    stringDeleteCat += $(this).attr("imc-data") + ",";
                });
                if (stringDeleteCat != "") {
                    stringDeleteCat = stringDeleteCat.substring(0, stringDeleteCat.length - 1);
                }
                if (stringDeleteCat != "") {
                    var dlg = that.dlgDeleteCatProyecto(stringDeleteCat);
                    dlg.setVisible(true);
                } else {
                    alert('No hay ningún Proyecto seleccionado');
                    return true;
                }
            });
        }
        ,error: function (result) {
            alert('Error al obtener Proyectos ' + result.status + ' ' + result.statusText);
        }
    });
}

imc.ui.CatProyecto.prototype.reloadCatProyectoDataTable = function () { //Recargar tabla al agregar, modificar o eliminar Proyecto
    var that = this;
    $.ajax({
        type: "POST"
        ,url: "Services/CAT.svc/GetDataProyecto"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,dataType: "json"
        ,success: function (data) {
            if (data.GetDataProyectoResult != null) {
                var ot = $("#tblCat").dataTable();
                ot.fnClearTable();
                ot.fnAddData(data.GetDataProyectoResult);
            } else {
                that.loadContent();
            }
        }
        ,error: function (result) {
            alert('Error al recargar la tabla de Proyectos ' + result.status + ' ' + result.statusText);
        }
    });
}; //Fin recargar tabla al agregar, modificar o eliminar Proyecto

imc.ui.CatProyecto.prototype.dlgNewCatProyecto = function () { //Dialog agregar Proyecto
    var that = this;
    this.dialogAgregarCat = new goog.ui.Dialog();
    this.dialogAgregarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Nombre: </label></div><div style="width:450px; float:left;"><input type="text" id="PROYECTO" style="width: 250px;" /></div></div></div><br /><br />'
    );
    var titleNewCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Agregar Proyecto');
    this.dialogAgregarCat.setTitle(titleNewCat);
    var btnNewCat= new goog.ui.Dialog.ButtonSet();
    btnNewCat.addButton({ caption: "Agregar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogAgregarCat.setButtonSet(btnNewCat);
    this.dialogAgregarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogAgregarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            var val = $("#PROYECTO").val();
            if (val == "") {
                $("#PROYECTO").addClass('campoConError');
                $('.validarCat').html('Ingrese el Proyecto');
                return false;
            } else {
                $.ajax({
                    url: "Services/CAT.svc/InsertProyecto"
                    ,type: "POST"
                    ,data: '{"PROYECTO":"' + val + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        var test = "";
                        test = data.InsertProyectoResult.state;
                        console.log('state: '+test);
                        if(!test){
                            $('.validarCat').html('Ya existe un Proyecto con este nombre');
                            return null;
                        } else {
                            that.reloadCatProyectoDataTable();
                            that.dialogAgregarCat.setVisible(false);
                        }
                    }
                    ,error: function (result) {
                        alert('Error al agregar Proyecto ' + result.status + ' ' + result.statusText);
                    }
                });
                return false;
            }
        }
    });
    return this.dialogAgregarCat;
};  //Fin dialog agregar Proyecto

imc.ui.CatProyecto.prototype.dlgDeleteCatProyecto = function (stringDeleteCat) { //Dialog borrar Proyecto
    var that = this;
    this.dialogBorrarCat = new goog.ui.Dialog();
    this.dialogBorrarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<label>¿Está seguro que desea eliminar los Proyectos seleccionados?</label><br />'
        +'</div>'
    );
    this.dialogBorrarCat.setTitle('Borrar Proyecto');
    var btnBorrarCat = new goog.ui.Dialog.ButtonSet();
    btnBorrarCat.addButton({ caption: "Borrar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogBorrarCat.setButtonSet(btnBorrarCat);
    this.dialogBorrarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogBorrarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            console.log(stringDeleteCat);
            $.ajax({
                url: "Services/CAT.svc/DeleteProyecto",
                type: "POST",
                dataType: "json",
                data: '{"ID_PROYECTO": "' + stringDeleteCat + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data) {
                        that.reloadCatProyectoDataTable();
                        return true;
                    }
                },
                error: function (result) {
                    alert('Error al borrar Proyecto ' + result.status + ' ' + result.statusText);
                }
            });
        }
    });
    return this.dialogBorrarCat;
}   //Fin dialog borrar Proyecto

imc.ui.CatProyecto.prototype.dlgUpdateProyecto = function (idCat) { //Dialog modificar Proyecto
    var that = this;
    this.dialogModificarCat = new goog.ui.Dialog();
    this.dialogModificarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Nombre: </label></div><div style="width:450px; float:left;"><input type="text" id="PROYECTO" style="width: 250px;" /></div></div></div><br /><br />'
    );
    var titleModificarCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Modificar Proyecto');
    this.dialogModificarCat.setTitle(titleModificarCat);
    var btnModificarCat = new goog.ui.Dialog.ButtonSet();
    btnModificarCat.addButton({ caption: "Guardar cambios", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogModificarCat.setButtonSet(btnModificarCat);
    this.dialogModificarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogModificarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        //alert(e.key);
        if (e.key == "o") {
            return true;
        } else {
            var val = $("#PROYECTO").val();
            if (val == "") {
                $("#PROYECTO").addClass('campoConError');
                $('.validarCat').html('Ingrese el Proyecto');
                return false;
            } else {
                $.ajax({
                    url: "Services/Cat.svc/UpdateProyecto"
                    ,type: "POST"
                    ,data: '{"ID_PROYECTO":' + idCat + ',"PROYECTO":"' + val + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        that.reloadCatProyectoDataTable();
                        return true;
                    }
                    ,error: function (result) {
                        alert('Error al modificar Proyecto ' + result.status + ' ' + result.statusText);
                    }
                });
            }
        }
    });
    return this.dialogModificarCat;
} //Fin dialog modificar Proyecto